package com.piece.file.client;

import com.piece.file.enums.FileStorageType;

public interface FileClientFactory {

    /**
     * 获得默认文件客户端
     */
    FileClient get();

    /**
     * 获得文件客户端
     *
     * @param storage 文件客户端 {@link FileStorageType}
     */
    FileClient get(FileStorageType storage);

    /**
     * 获得本地文件客户端
     */
    FileClient getNative();

    /**
     * 创建文件客户端
     *
     * @param storage 存储器的枚举 {@link FileStorageType}
     * @param config  文件配置
     */
    <Config extends FileClientConfig> void init(String storage, Config config);

    /**
     * 切换默认客户端
     */
    void changeClientType(String clientType);
}
